package cn.itcast.syntax

/**
  * @Package cn.itcast.variable
  * @author KTL
  * @date 2021/5/14 0014 16:51
  * @version V1.0
  * @Copyright © 2015-04-29  One for each, and two for each
  *           scala变量定义和语法
  */
object Demo01_Variable {
  def main(args: Array[String]): Unit = {
    //注意1：语句末尾可以不加；
    val name:String="itcast"

    //注意2：类型可以省略，scala可以自动推断
    val age =18

    //注3：val修饰的变量不可以被赋值，类似于final
   // age =30

    //注意4：var修饰变量可以被重新赋值
    var ages =40
    ages=90

    //注意5：开发中优先使用val，因为scala常用在并发环境，使用val更加安全
    val nochenges =20

    //注意6：可以使用type给类型起别名
    //拓展：自定义一个数据类型
    type mystring =String
    val address:mystring="北京"

    //注意7： 可以使用lazy修饰变量，延迟变量的初始化，真正调用的时候才执行
   lazy val info =query()
    println("a")
    print(info)

  }
   def query():String={
    println("b")
    "user info "
   }

  /**
    * 没有加lazy
    * b
    * a
    * user info
    */
  /**
    * 加上lazy
    * a
    * b
    * user info
    */
}
